# -*- coding=utf-8 -*-
# @time:2021/8/4
# @phone:15874198829
# @author:码尚教育_星瑶
import time

from appium import webdriver
# web自动测试定位方式
from selenium.webdriver.common.by import By
# app元素定位方式
from appium.webdriver.common.mobileby import MobileBy

# 设置操控终端的配置参数
desired_caps = {
    "automationName": "UiAutomator2",  # 默认框架
    "platformName": "Android",  # 指定操作系统
    "platformVersion": "5.1.1",  # 指定系统版本
    "deviceName": "127.0.0.1:62001",  # 指定设备名称
    "appPackage": "com.tal.kaoyan",  # 被操作的应用程序包名
    "appActivity": "com.tal.kaoyan.ui.activity.SplashActivity",  # 启动页面
    "noReset": "True"  # 为true 不重置  为false 重置
}
# 发送指令给appium server
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

# 1、元素定位方式一： resourceid属性定位元素基于find_element_by_id来定位元素
username_el = driver.find_element(MobileBy.ID, "com.tal.kaoyan:id/login_email_edittext")

username_el2 = driver.find_element_by_id("com.tal.kaoyan:id/login_email_edittext")

# 1、元素定位方式二： 基于text属性可以用MobileBy.ANDROID_UIAUTOMATOR

el3 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("请输入用户名")')
el4 = driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")')

# 输入内容
# el3.send_keys("xingyao1202")

# MobileBy.ANDROID_UIAUTOMATOR支持多个属性组合定位：className    resourceId
# 多个属性组合定位  new UiSelector().方法1().方法2().方法3()
# UiSelector类里面的方法，如果参数是字符串类型，必须是双引号

el5 = driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,
                          'new UiSelector().className("android.widget.EditText").resourceId("com.tal.kaoyan:id/login_password_edittext") ')
el4.send_keys("xingyao1202")
time.sleep(2)

# 定位方式三：基于content-desc/description属性定位：MobileBy.ACCESSIBILITY_ID
el6 = driver.find_element(MobileBy.ACCESSIBILITY_ID, "content-desc/description属性值")
el7 = driver.find_element_by_accessibility_id("content-desc/description属性值")
